home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / ms_dos / check / check102 / check.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-07-08  |  5.6 KB  |  177 lines

  1. Program check;
  2. uses dos,crt;
  3.  
  4. const
  5.    {カラーテーブル設定}
  6.    kuro=0;Ao=1;Midori=2;Mizuiro=3;Aka=4;Kiiro=6;Murasaki=5;Shiro=7;
  7.    CrChar ='';{ ^M;}         (* 改行文字 ここでは使っていない*)
  8.    MaxWord=80;
  9.  
  10. {$I check.lib}
  11.    
  12. var
  13.    jisyo1,jisyo2,jisyo3,
  14.    ws,STringLine,tango,tango_file2,filename,lineNo:string;
  15.    flag,i,j,KURIKAESHI,linecounter:integer;
  16.    hensyufile:text;
  17.    ch:char;
  18.    dammyflag:boolean;
  19.    dammy:string[1];
  20.    bword,word:array[1..MaxWord] of string;{一文中の単語数の許容範囲}
  21.  
  22. begin
  23. {===初期の表示=====完成=====================================}
  24.    HeapError := @HeapFunc;
  25.    title;
  26.    line;
  27. {===辞書ファイルの初期化========完成================================}
  28.    config(jisyo1,jisyo2,jisyo3); {辞書ファイルの設定jisyo1,jisyo2,jisyo3は辞書}
  29.    {1:無かったら新規作成 2:無かったら終了 3:あっても新規作成}
  30.    CheckFileExist(2,jisyo1);
  31.    CheckFileExist(1,jisyo2);
  32.    CheckFileExist(3,jisyo3);
  33. {===編集ファイルの選択========完成================================}
  34.    linecounter:=0;j:=-1;
  35.    case paramcount of
  36.       0:begin
  37.           repeat
  38.             write('編集対象のファイル名を与えて下さい>');
  39.             readln(filename);
  40.             openfile(filename,hensyufile,flag);
  41.           until flag=0;
  42.         end;
  43.       1:begin
  44.           filename:=paramstr(1);
  45.           openfile(filename,hensyufile,flag);
  46.           if flag=1 then 
  47.              begin
  48.                textcolor(aka);
  49.                writeln(^G+'コマンドエラー');
  50.                textcolor(shiro);
  51.                writeln('使い方');
  52.                writeln('CHECK [ファイル名:String] [行番号:integer]');
  53.                halt(1);
  54.              end;
  55.         end;
  56.       2:begin
  57.           filename:=paramstr(1);
  58.           openfile(filename,hensyufile,flag);
  59.           if flag=1 then 
  60.              begin
  61.                textcolor(aka);
  62.                writeln(^G+'コマンドエラー');
  63.                textcolor(shiro);
  64.                writeln('使い方');
  65.                writeln('CHECK [ファイル名:String] [行番号:integer]');
  66.                halt(1);
  67.              end
  68.            else 
  69.              begin
  70.                lineNo:=paramstr(2);
  71.                val(lineNo,j,flag);
  72.                if flag=1 then halt(1);
  73.              end;
  74.         end;
  75.    end;{end of case}
  76.    
  77.    
  78. {===一文を文書ファイルより切り取り単語に分解===完成====================}
  79. dammyflag:=false;
  80. while not eof(hensyufile) do
  81. begin
  82.  line;
  83.  if j>linecounter then 
  84.     begin
  85.       if (not(paramstr(1)='') and (flag=0)) then 
  86.          begin
  87.            repeat
  88.              readln(hensyufile,Ws[i]);linecounter:=linecounter+1;
  89.            until linecounter=j;
  90.          end;
  91.     end;
  92.  repeat
  93.      readln(hensyufile,STRINGline);linecounter:=linecounter+1;
  94.  until ( eoln(hensyufile) or eof(hensyufile) or (stringline<>''));
  95. stringline:=stringline+' ';
  96. writeln(stringline);
  97.  
  98.  
  99.  textcolor(kiiro);
  100.  writeln('この行は ',filename,' の ',linecounter,' 行目です。');
  101.  textcolor(shiro);
  102.  
  103. { 単語に分解するルーチン 完成}
  104.    i:=0;
  105.    repeat
  106.       Ws:='';
  107.       repeat
  108.         dammy:=copy(StringLine,1,1);
  109.         if not ((dammy = '!')or(dammy = '?')or(dammy = ' ')or
  110.                 (dammy = '.')or(dammy = ',')or(dammy = #13)or
  111.                 (dammy = #9 )or(dammy = #10)or(dammy = ':'))
  112.             then Ws:=Ws+dammy;
  113.         delete(StringLine,1,1);
  114.       until    ((dammy = '!')or(dammy = '?')or(dammy = ' ')or
  115.                 (dammy = '.')or(dammy = ',')or(dammy = #13)or
  116.                 (dammy = #9 )or(dammy = #10)or(dammy = ':'));
  117.       
  118.       if not ((Ws = '')or(Ws = '!')or(Ws = '?')or(Ws = ' ')or
  119.                 (Ws = '.')or(Ws = ',')or(Ws = #13)or
  120.                 (Ws = #9 )or(Ws = #10)or(Ws = ':')) then
  121.         begin
  122.           i:=i+1;
  123.           Word[i]:=Ws;
  124.         end;
  125.    until ((dammy = #13)or(dammy = #10)or(STringLine=#13)
  126.           or(STringLine=#10)or(STringLine=''));
  127. { 単語に分解するルーチン <-- ここで終わり}
  128.     
  129. {====辞書を検索し結果を表示するルーチン=================================}
  130.    for KURIKAESHI:=1 to i do
  131.     begin
  132.      if ((word[KURIKAESHI]<>'') or (word[KURIKAESHI]='' )) 
  133.          then bword[KURIKAESHI]:=word[KURIKAESHI];
  134.      SearchWordfromDIC(jisyo2,bword[KURIKAESHI],tango);
  135.      tango_file2:=tango;
  136.      if tango='' then SearchWordfromDIC(jisyo1,bword[KURIKAESHI],tango);
  137.     {↓辞書2になくて辞書1にあった場合に辞書2に書き込む}
  138.        if ((tango_file2='') and (tango<>'')) then
  139.           DataPlus2File(jisyo2,bword[KURIKAESHI]);
  140.        if tango='' 
  141.           then 
  142.             begin
  143.               textcolor(kiiro);
  144.               write(bword[KURIKAESHI]);
  145.               textcolor(shiro);
  146.               writeln(':見当たりません');
  147.               textcolor(aka);
  148.               writeln(^G+'辞書3に保存しておきますか [Y/N]');
  149.               textcolor(shiro);
  150.               repeat
  151.                 ch:=readkey;
  152.               until ch in ['y','Y','n','N'];
  153.               if ch in ['y','Y'] then 
  154.                  begin
  155.                     {↓辞書2と辞書1のどちらにも無い場合のみ辞書3に書き込む}
  156.                     DataPlus2File(jisyo3,bword[KURIKAESHI]);
  157.                     writeln('保存しました');
  158.                  end;
  159.             end
  160.           else 
  161.              begin
  162.                 textcolor(mizuiro);
  163.                 write(bword[KURIKAESHI]);
  164.                 textcolor(shiro);
  165.                 writeln(':既存');
  166.              end;
  167.     end;{of for}
  168.  
  169. end;{ チェックするファイルの終わりを確認する
  170. while not eof(hensyufile) do begin に対応する}
  171. {これは一番大きな繰り返しのrepeatに対応するuntil}
  172.    close(hensyufile);
  173.    textcolor(shiro);
  174.    halt(0);
  175. end.
  176.  
  177.